/*
 * Copyright 2006-2008 Sun Microsystems, Inc. All Rights Reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
 * 
 * This code is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2
 * only, as published by the Free Software Foundation.
 * 
 * This code is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * General Public License version 2 for more details (a copy is
 * included in the LICENSE file that accompanied this code).
 * 
 * You should have received a copy of the GNU General Public License
 * version 2 along with this work; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA
 * 
 * Please contact Sun Microsystems, Inc., 16 Network Circle, Menlo
 * Park, CA 94025 or visit www.sun.com if you need additional
 * information or have any questions.
 */

package com.sun.spot.peripheral.radio;

import java.util.Vector;

import com.sun.spot.util.Utils;

class History {

	private Vector history;
	private HistoryEvent currentHistoryEvent;
	
	History() {
	    	history = new Vector(10);
        	for (int i = 0; i < 10; i++) {
        		history.addElement(new HistoryEvent());
        	}

	}

	void newEvent(boolean overflowDetected, int fifoRemaining, int fsmState, boolean fifopPinHigh, boolean fifoPinHigh) {
		currentHistoryEvent = (HistoryEvent)history.firstElement();
		history.removeElementAt(0);
		history.addElement(currentHistoryEvent);
		currentHistoryEvent.setReceiveData(overflowDetected, fifoRemaining, fsmState, fifopPinHigh, fifoPinHigh);
	}

	void setSPIData(RadioPacket rp, int spiResult, int size, boolean fifopPinHigh, boolean fifoPinHigh) {
		currentHistoryEvent.setSPIData(rp, spiResult, size, fifopPinHigh, fifoPinHigh);
	}

	void setFlushed() {
		currentHistoryEvent.setFlushed();
	}

	void setDiscarded() {
		currentHistoryEvent.setDiscarded();
	}

	void setRejected(boolean result) {
		currentHistoryEvent.setRejected(result);
	}

	void dump() {
		Utils.log("FIFO history");
		for (int i = 0; i < 10; i++) {
			HistoryEvent he = (HistoryEvent)history.elementAt(i);
			Utils.log("EVENT "+i);
			he.display();
			Utils.log("");
			Utils.log("");
		}
	}
}

